package ar.edu.frba.utn.dds.Vuelo;

import ar.edu.frba.utn.dds.Compania.Compania;
import ar.edu.frba.utn.dds.Usuario.Usuario;

public class Asiento {
	private String origen;
	private String destino;
	private String fechaLlegada;
	private String fechaSalida;
	private String horaLlegada;
	private String horaSalida;
	private String codigoAsiento;
	private String precioAsiento;
	private String claseAsiento;
	private String ubicacionAsiento;
	private String estadoAsiento;
	private String precioTotal;
	private Compania compania;
	private Integer codigoIndice;
	
	
	
	/**
	 * Metodo que se encarga de instanciar un asiento
	 * @param codigoAsiento
	 * @param precioAsiento
	 * @param claseAsiento
	 * @param ubicacionAsiento
	 * @param estadoAsiento
	 * @param codigoIndice
	 * @param companiaAerea
	 * @param user
	 */
	public Asiento(String codigoAsiento, String precioAsiento, String claseAsiento,
			String ubicacionAsiento, String estadoAsiento,String origen, String destino, String fechaSalida, String fechaLlegada, String horaSalida,
			String horaLlegada,Integer codigoIndice,Compania companiaAerea, Usuario user) {
		this.setCodigoAsiento(codigoAsiento);
		this.setPrecioAsiento(precioAsiento);
		this.setClaseAsiento(claseAsiento);
		this.setUbicacionAsiento(ubicacionAsiento);
		this.setEstadoAsiento(estadoAsiento);
		this.setOrigen(origen);
		this.setDestino(destino);
		this.setFechaSalida(fechaSalida);
		this.setFechaLlegada(fechaLlegada);
		this.setHoraSalida(horaSalida);
		this.setHoraLlegada(horaLlegada);
		Double precioDelAsiento = Double.valueOf(precioAsiento);
		Double multiplicacionPorcentaje = precioDelAsiento * 1.15;
		this.setPrecioTotal(String.valueOf(
				multiplicacionPorcentaje + user.montoRecargo()));
		this.setCompania(companiaAerea);
		this.setCodigoIndice(codigoIndice);
	}

	public String getCodigoAsiento() {
		return codigoAsiento;
	}


	public void setCodigoAsiento(String codigoAsiento) {
		this.codigoAsiento = codigoAsiento;
	}


	public String getPrecioAsiento() {
		return precioAsiento;
	}


	public void setPrecioAsiento(String precioAsiento) {
		this.precioAsiento = precioAsiento;
	}


	public String getClaseAsiento() {
		return claseAsiento;
	}


	public void setClaseAsiento(String claseAsiento) {
		this.claseAsiento = claseAsiento;
	}


	public String getUbicacionAsiento() {
		return ubicacionAsiento;
	}


	public void setUbicacionAsiento(String ubicacionAsiento) {
		this.ubicacionAsiento = ubicacionAsiento;
	}


	public String getEstadoAsiento() {
		return estadoAsiento;
	}


	public void setEstadoAsiento(String estadoAsiento) {
		this.estadoAsiento = estadoAsiento;
	}


	public String getPrecioTotal() {
		return precioTotal;
	}


	public void setPrecioTotal(String precioTotal) {
		this.precioTotal = precioTotal;
	}


	public Compania getCompania() {
		return compania;
	}

	public void setCompania(Compania compania) {
		this.compania = compania;
	}

	public Integer getCodigoIndice() {
		return codigoIndice;
	}


	public void setCodigoIndice(Integer codigoIndice) {
		this.codigoIndice = codigoIndice;
	}
	
	public String getOrigen() {
		return origen;
	}

	public void setOrigen(String origen) {
		this.origen = origen;
	}

	public String getDestino() {
		return destino;
	}

	public void setDestino(String destino) {
		this.destino = destino;
	}

	public String getFechaLlegada() {
		return fechaLlegada;
	}

	public void setFechaLlegada(String fechaLlegada) {
		this.fechaLlegada = fechaLlegada;
	}

	public String getFechaSalida() {
		return fechaSalida;
	}

	public void setFechaSalida(String fechaSalida) {
		this.fechaSalida = fechaSalida;
	}

	public String getHoraLlegada() {
		return horaLlegada;
	}

	public void setHoraLlegada(String horaLlegada) {
		this.horaLlegada = horaLlegada;
	}

	public String getHoraSalida() {
		return horaSalida;
	}

	public void setHoraSalida(String horaSalida) {
		this.horaSalida = horaSalida;
	}

	/**
	 * Metodo que se encarga de retornar una booleana donde nos indica si es un asiento super oferta
	 * @return
	 */
	public boolean sosSuperOferta(){
		Double montoMinimoOferta = 4000.00;
		Double montoMaximoOferta = 8000.00;
		Double precioDelAsiento = Double.parseDouble(this.getPrecioTotal());
		return ((this.getClaseAsiento().equalsIgnoreCase("P") 
					&& this.compararDouble(precioDelAsiento,montoMaximoOferta)<0)
				|| (this.getClaseAsiento().equalsIgnoreCase("E") && 
						this.compararDouble(precioDelAsiento,montoMinimoOferta)<0)
						);
			
	}
	
	/**
	 * Metodo que se encarga de comparar los valores Double
	 * @param precioTotal
	 * @param montoAComparar
	 * @return
	 */
	private Integer compararDouble(Double precioTotal,Double montoAComparar){
		return Double.compare(precioTotal, montoAComparar);
	}
}
